class TypeConverter {
  /**
   * 将一个值转换为字符串，如果值为 null 或 undefined，则返回空字符串
   * @param value 要转换的值
   * @returns 转换后的字符串
   */
  static toString(value: any): string {
    if (value === null || value === undefined) {
      return "";
    }
    return String(value);
  }

  /**
   * 将一个值转换为数字，如果值为 null、undefined 或无法转换为数字，则返回 0
   * @param value 要转换的值
   * @returns 转换后的数字
   */
  static toNumber(value: any): number {
    if (value === null || value === undefined) {
      return 0;
    }
    const num = Number(value);
    return isNaN(num) ? 0 : num;
  }

  /**
   * 将一个值转换为布尔值，如果值为 null 或 undefined，则返回 false
   * @param value 要转换的值
   * @returns 转换后的布尔值
   */
  static toBoolean(value: any): boolean {
    if (value === null || value === undefined) {
      return false;
    }
    return Boolean(value);
  }

  /**
   * 将一个值转换为数组，如果值为 null 或 undefined，则返回空数组
   * @param value 要转换的值
   * @returns 转换后的数组
   */
  static toArray(value: any): any[] {
    if (value === null || value === undefined) {
      return [];
    }
    return Array.isArray(value) ? value : [value];
  }

  /**
   * 将一个值转换为对象，如果值为 null 或 undefined，则返回空对象
   * @param value 要转换的值
   * @returns 转换后的对象
   */
  static toObject(value: any): object {
    if (value === null || value === undefined) {
      return {};
    }
    return typeof value === "object" ? value : {};
  }
}

export default TypeConverter;
